/**
 * 
 */
package com.proyecto.contratos.modelo.servicios;

import org.hibernate.Session;

import com.proyecto.contratos.modelo.dto.CorrelativosContratacion;
import com.proyecto.contratos.modelo.dto.CorrelativosContratacionId;
import com.proyecto.core.modelo.excepciones.GeneralException;
import com.proyecto.core.modelo.servicio.ServicioGenerico;

/**
 * @author vico
 *
 */
public class ServicioCorrelativosContratacion extends ServicioGenerico {

	/**
	 * 
	 */
	public ServicioCorrelativosContratacion() {
		// TODO Auto-generated constructor stub
	}


	public String obtenerProximoNumeroComoString(CorrelativosContratacionId correlativoId, boolean iniciaTransaccion) throws GeneralException{
		CorrelativosContratacion correlativo = null;
		String correlativoString = "";
		
		correlativo = (CorrelativosContratacion) super.consultar(correlativoId);
		if (correlativo.getSecuenciaentero() == null){
				correlativo.setSecuenciaentero(0L);
		}
		correlativo.setSecuenciaentero(correlativo.getSecuenciaentero() + 1L);
		modificar(correlativo, iniciaTransaccion);
		if (correlativo.getPrefijo()!= null){
			correlativoString = correlativo.getPrefijo(); 
		}
			
		correlativoString = correlativoString + super.numeroString(correlativo.getSecuenciaentero(), correlativo.getCorrelativoformato());
		if (correlativo.getSufijo()!= null){
			correlativoString = correlativoString + correlativo.getSufijo(); 
		}
		return correlativoString;
	}
	
	
	public Long obtenerProximoNumeroComoEntero(CorrelativosContratacionId correlativoId, boolean iniciaTransaccion) throws GeneralException{
		CorrelativosContratacion correlativo = null;
		Long correlativoEntero = 0L;

		correlativo = (CorrelativosContratacion)super.consultar(correlativoId);
			
		if (correlativo.getSecuenciaentero() == null){
			correlativo.setSecuenciaentero(correlativoEntero);
		}
		
		correlativoEntero = correlativo.getSecuenciaentero() + 1L;
		correlativo.setSecuenciaentero(correlativoEntero);
		super.modificar(correlativo, iniciaTransaccion);

		return correlativoEntero;
	}
	
	public Long obtenerProximoNumeroComoEnteroConSession(CorrelativosContratacionId correlativoId, boolean iniciaTransaccion, Session s) throws GeneralException{
		CorrelativosContratacion correlativo = null;
		Long correlativoEntero = 0L;

		correlativo = (CorrelativosContratacion)super.consultar(correlativoId);
			
		if (correlativo.getSecuenciaentero() == null){
			correlativo.setSecuenciaentero(correlativoEntero);
		}
		
		correlativoEntero = correlativo.getSecuenciaentero() + 1L;
		correlativo.setSecuenciaentero(correlativoEntero);
		super.modificar(correlativo, s);

		return correlativoEntero;
	}	
	
}
